home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / New System Software Extensions / QuickDraw™ 3D 1.0 / Development / Interfaces / QD3DStorage.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-02  |  6.2 KB  |  223 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DStorage.h                                             **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Abstraction to deal with various types of stream-based     **
  7.  **                    storage devices.                                         **
  8.  **                                                                          **
  9.  **                                                                          **
  10.  **                                                                          **
  11.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  12.  **                                                                          **
  13.  **                                                                          **
  14.  *****************************************************************************/
  15. #ifndef QD3DStorage_h
  16. #define QD3DStorage_h
  17.  
  18. #ifndef QD3D_h
  19. #include "QD3D.h"
  20. #endif  /*  QD3D_h  */
  21.  
  22. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  23. #include <Types.h>
  24. #include <Files.h>
  25. #endif  /*  OS_MACINTOSH  */
  26.  
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif    /* __cplusplus */
  30.  
  31. /******************************************************************************
  32.  **                                                                             **
  33.  **                                Storage Routines                             **
  34.  **                                                                             **
  35.  *****************************************************************************/
  36.  
  37. TQ3ObjectType Q3Storage_GetType(
  38.     TQ3StorageObject    storage);
  39.  
  40. TQ3Status Q3Storage_GetSize(
  41.     TQ3StorageObject    storage,
  42.     unsigned long        *size);
  43.  
  44. /* 
  45.  *    Reads "dataSize" bytes starting at offset in storage, copying into data. 
  46.  *    sizeRead returns the number of bytes filled in. 
  47.  *    
  48.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeRead
  49.  */
  50.  
  51. TQ3Status Q3Storage_GetData(
  52.     TQ3StorageObject    storage,
  53.     unsigned long        offset,
  54.     unsigned long        dataSize,
  55.     unsigned char        *data,
  56.     unsigned long        *sizeRead);
  57.  
  58. /* 
  59.  *    Write "dataSize" bytes starting at offset in storage, copying from data. 
  60.  *    sizeWritten returns the number of bytes filled in. 
  61.  *    
  62.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeWritten
  63.  */
  64.  
  65. TQ3Status Q3Storage_SetData(
  66.     TQ3StorageObject    storage,
  67.     unsigned long        offset,
  68.     unsigned long        dataSize,
  69.     const unsigned char    *data,
  70.     unsigned long        *sizeWritten);
  71.  
  72. /******************************************************************************
  73.  **                                                                             **
  74.  **                             Memory Storage Prototypes                         **
  75.  **                                                                             **
  76.  *****************************************************************************/
  77.  
  78. QD3D_EXPORT TQ3ObjectType Q3MemoryStorage_GetType(
  79.     TQ3StorageObject        storage);
  80.  
  81. /*
  82.  * These calls COPY the buffer into QD3D space
  83.  */
  84. QD3D_EXPORT TQ3StorageObject Q3MemoryStorage_New(
  85.     const unsigned char        *buffer,
  86.     unsigned long            validSize);
  87.  
  88. QD3D_EXPORT TQ3Status Q3MemoryStorage_Set(
  89.      TQ3StorageObject        storage,
  90.     const unsigned char        *buffer,
  91.     unsigned long            validSize);
  92.  
  93. /*
  94.  * These calls use the pointer given - you must dispose it when you're through
  95.  */
  96. QD3D_EXPORT TQ3StorageObject Q3MemoryStorage_NewBuffer(
  97.     unsigned char            *buffer,
  98.     unsigned long            validSize,
  99.     unsigned long            bufferSize);
  100.  
  101. QD3D_EXPORT TQ3Status Q3MemoryStorage_SetBuffer(
  102.      TQ3StorageObject        storage,
  103.     unsigned char            *buffer,
  104.     unsigned long            validSize,
  105.     unsigned long            bufferSize);
  106.  
  107. QD3D_EXPORT TQ3Status Q3MemoryStorage_GetBuffer(
  108.      TQ3StorageObject        storage,
  109.     unsigned char            **buffer,
  110.     unsigned long            *validSize,
  111.     unsigned long            *bufferSize);
  112.  
  113.  
  114. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  115.  
  116. /******************************************************************************
  117.  **                                                                             **
  118.  **                                Macintosh Handles Prototypes                 **
  119.  **                                                                             **
  120.  *****************************************************************************/
  121.  
  122. /* Handle Storage is a subclass of Memory Storage */
  123.  
  124. QD3D_EXPORT TQ3StorageObject Q3HandleStorage_New(
  125.     Handle                    handle,
  126.     unsigned long            validSize);
  127.  
  128. QD3D_EXPORT TQ3Status Q3HandleStorage_Set(
  129.      TQ3StorageObject        storage,
  130.     Handle                    handle,
  131.     unsigned long            validSize);
  132.  
  133. QD3D_EXPORT TQ3Status Q3HandleStorage_Get(
  134.      TQ3StorageObject        storage,
  135.      Handle                    *handle,
  136.     unsigned long            *validSize);
  137.  
  138.  
  139. /******************************************************************************
  140.  **                                                                             **
  141.  **                                Macintosh Storage Prototypes                 **
  142.  **                                                                             **
  143.  *****************************************************************************/
  144.  
  145. QD3D_EXPORT TQ3StorageObject Q3MacintoshStorage_New(                    
  146.     short                    fsRefNum);    /* Note: This storage is assumed open */
  147.  
  148. QD3D_EXPORT TQ3Status Q3MacintoshStorage_Set(
  149.      TQ3StorageObject        storage,
  150.     short                    fsRefNum);
  151.  
  152. QD3D_EXPORT TQ3Status Q3MacintoshStorage_Get(
  153.      TQ3StorageObject        storage,
  154.     short                    *fsRefNum);
  155.     
  156. QD3D_EXPORT TQ3ObjectType Q3MacintoshStorage_GetType(
  157.     TQ3StorageObject        storage);
  158.  
  159.  
  160. /******************************************************************************
  161.  **                                                                             **
  162.  **                            Macintosh FSSpec Storage Prototypes                 **
  163.  **                                                                             **
  164.  *****************************************************************************/
  165.  
  166. QD3D_EXPORT TQ3StorageObject Q3FSSpecStorage_New(
  167.     const FSSpec            *fs);
  168.  
  169. QD3D_EXPORT TQ3Status Q3FSSpecStorage_Set(
  170.      TQ3StorageObject        storage,
  171.     const FSSpec            *fs);
  172.  
  173. QD3D_EXPORT TQ3Status Q3FSSpecStorage_Get(
  174.      TQ3StorageObject        storage,
  175.     FSSpec                    *fs);
  176.  
  177. #endif  /*  OS_MACINTOSH  */
  178.  
  179.  
  180. /******************************************************************************
  181.  **                                                                             **
  182.  **                                    Unix Prototypes                             **
  183.  **                                                                             **
  184.  *****************************************************************************/
  185.  
  186. TQ3StorageObject Q3UnixStorage_New(
  187.     FILE                    *storage);
  188.  
  189. TQ3Status Q3UnixStorage_Set(
  190.      TQ3StorageObject        storage,
  191.     FILE                    *stdFile);
  192.  
  193. TQ3Status Q3UnixStorage_Get(
  194.      TQ3StorageObject        storage,
  195.     FILE                    **stdFile);
  196.     
  197. TQ3ObjectType Q3UnixStorage_GetType(
  198.     TQ3StorageObject        storage);
  199.  
  200.  
  201. /******************************************************************************
  202.  **                                                                             **
  203.  **                                Unix Path Prototypes                         **
  204.  **                                                                             **
  205.  *****************************************************************************/
  206.  
  207. TQ3StorageObject Q3UnixPathStorage_New(                    
  208.     const char                *pathName);                /* C string */
  209.  
  210. TQ3Status Q3UnixPathStorage_Set(            
  211.      TQ3StorageObject        storage,
  212.     const char                *pathName);                /* C string */
  213.  
  214. TQ3Status Q3UnixPathStorage_Get(            
  215.      TQ3StorageObject        storage,
  216.     char                    *pathName);                /* pathName is a buffer */
  217.  
  218. #ifdef __cplusplus
  219. }
  220. #endif    /* __cplusplus */
  221.  
  222. #endif /* QD3DStorage_h */
  223.